#!c:/perl/bin/perl.exe
##########################################################################################################################
##### a script to add emoticons to Wigan-Warriors.com
##########################################################################################################################

##########################################################################################################################
######  TODO list  #######################################################################################################
##########################################################################################################################
##########################################################################################################################

##########################################################################################################################
###### Bug list
##########################################################################################################################
##########################################################################################################################

##########################################################################################################################
# Includes
##########################################################################################################################

use lib qw(../cgi-bin);
use Sys::Hostname;
use Time::Local qw(timelocal);
use CGI;

use Diva::DB;
use Diva::DataObject;
use WiganRL::DataObject qw(:constants);
use WiganRL::DataObject::Emoticon;
use WiganRL::Search;

use Getopt::Long;
use File::Glob;
use File::Basename;

use strict;
#use warnings;

$|++;  #unbuffered

##########################################################################################################################
# get arguments
##########################################################################################################################

my $dir= "c:/wwcom/v2.0/html/images/useractions/emoticons";
my $type= "*.gif";
#my $permissions= 3;
#GetOptions ('type' => \$daily, 'weekly' => \$weekly);

WiganRL::DataObject->init_class();
WiganRL::Search->init_class();

##########################################################################################################################
# site setup and location variable declarations
##########################################################################################################################
my $host= hostname;
my ($SITE_BASE_URL,$SITE_BASE_DIR,$CGI_BASE_URL,$CGI_BASE_DIR,$EMAIL_BASE_DIR,$MAIL_SMTP_SERVER);
my ($SEND_EMAILS,$ADMIN_NAME,$ADMIN_EMAIL,$MAIL_SCRIPT,$SITE_DATA_DIR);

if ($host=~ /MIKE/i) {     ### home
    $SITE_BASE_URL= 'http://localhost/wigan';
    $SITE_BASE_DIR= 'c:/mdr/wwcom/v2.0/html';
    $SITE_DATA_DIR= 'c:/mdr/wwcom/v2.0/data';
    $CGI_BASE_URL= 'http://localhost/cgi-bin/wigan';
    $CGI_BASE_DIR= 'c:/mdr/wwcom/v2.0/cgi-bin';
} else {    ##server
    $SITE_BASE_URL= 'http://wigan.smb.man.ac.uk/wigan';
    $SITE_BASE_DIR= 'c:/wwcom/v2.0/html';    
    $SITE_DATA_DIR= 'c:/wwcom/v2.0/data';
    $CGI_BASE_URL= 'http://wigan.smb.man.ac.uk/wigan';
    $CGI_BASE_DIR= 'c:/wwcom/v2.0/cgi-bin';
}

my $cgi= CGI->new();
$cgi->param('CGI_BASE_URL',$CGI_BASE_URL);
$cgi->param('SessionID','');

my $dbh= Diva::DB->new();
$dbh->set( {
    DATABASE_NAME       => 'wwcom',
    DATABASE_SERVER     => 'localhost:3306',
    DATABASE_USERNAME   => 'wwcom',
    DATABASE_PASSWORD   => 'wwcom',
    DATABASE_TYPE       => 'mysql',
    } );
$dbh->connect();
$dbh->debug(0);

WiganRL::DataObject->dbh($dbh);
WiganRL::DataObject->cgi($cgi);
WiganRL::Search->dbh($dbh);
#WiganRL::DataObject::User->dbh($dbh);

#get last number
my $s= WiganRL::Search->new;
$s->table('EMOTICON');
$s->orderby('EMOTICON_ORDER desc');
$s->limit(1);
my $order= $s->search->[0]->data('EMOTICON_ORDER');

my @files= <$dir/$type>;

for my $file (@files) {
    my ($name,$path,$sfx)= fileparse($file,qr{\..*});
    print "Found file: $file\n";
    my $code= substr(lc($name),0,4);    
    my $url= "images/useractions/emoticons/$name$sfx";
    $cgi->param('EMOTICON_NAME',$name);
    $s->clear; $s->table('EMOTICON');
    $s->where("EMOTICON_URL = '$url'");
    my $res= $s->search;
    if ($#$res >= 0) {
        print "\tDuplicate ... skipping\n\n";
        next;
    }
    $name=~ s/(\w+)/\u\L$1/g;  #title case
    my $codeok= 0;
    my $codesfx= '';
    while (!$codeok) {
        $s->clear; $s->table('EMOTICON');
        $s->clear_cache_type('EMOTICON');
        $s->where("EMOTICON_CODE = ':$code$codesfx:'");
        my $res= $s->search;
        print "EMOTICON_CODE = ':$code$codesfx:' Found: $#$res\n";
        if ($#$res >= 0) {
            $codesfx++;
            print "\t\tTrying code: $code$codesfx\n";
            next;
        }
        $codeok= 1;
    }
    $code= $code.$codesfx;
    $cgi->param('EMOTICON_NAME',$name);
    $cgi->param('EMOTICON_CODE',":$code:");
    $cgi->param('EMOTICON_URL',$url);
    $cgi->param('EMOTICON_ORDER',++$order);
    $cgi->param('UserID',12032);
    $cgi->param('ParentID','');
    
    my $o= WiganRL::DataObject::Emoticon->new;
    $o->update;
    print "\tAdded EMoticon: ".$o->id."\n\n";
}
    
exit(0);

